<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>setup 的props和emit综合用法</title>
</head>

<body>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

    <div id="Application">
        <child otherTitle="别人的标题" :my-title="msg" @son-click="sonClick"></child>
    </div>
    <script>
        const App = Vue.createApp({
            setup() {
                const msg = Vue.ref({ title: '父组件给子组件的数据' })
                //打印子组件传的值
                const sonClick = (msss) => {
                    console.log("打印下拿到的值：", msss)
                }

                return {
                    msg,
                    sonClick
                }
            },
        });

        //子组件
        const childBlock = {
            props: {
                myTitle: {
                    type: Object,

                },

            },
            setup(props, { attrs, slots, emit }) {
                //输出{title:父组件传递的值}
                console.log('props==>', props.myTitle)
                // 输出别人的标题【使用context获取值，不需要使用props去接收】
                console.log('context==> ', attrs.othertitle);

                // 输出undefined，因为context不需要使用props去接受。
                console.log('contextmytitle==> ', attrs.mytitle);
                const sonHander = () => {
                    emit('sonClick', '子组件传递给父组件')
                }
                return {
                    sonHander,
                    attrs
                }

            },

            template: '<button type="button" @click="sonHander">点击我，我是子组件中的数据</button> <h2>使用了props声明接收==>{{ myTitle  }}</h2> <h2>使用参数attrs获取==>{{ attrs.othertitle  }}</h2> '

        }
        App.component("child", childBlock);

        //挂载
        App.mount("#Application");
    </script>
</body>

</html>